package com.mini.grpc.stream;

/**
 * 客户端流观察者接口
 * 扩展StreamObserver，提供客户端流控制功能
 * 
 * @param <T> 消息类型
 * @author Mini-gRPC
 */
public interface ClientStreamObserver<T> extends StreamObserver<T> {
    
    /**
     * 禁用自动入站流控制
     * 调用此方法后，需要手动调用request()来请求更多消息
     */
    void disableAutoInboundFlowControl();
    
    /**
     * 请求更多消息
     * 只有在禁用自动流控制后才需要调用
     * 
     * @param count 请求的消息数量
     */
    void request(int count);
    
    /**
     * 设置消息压缩
     * 
     * @param enable 是否启用压缩
     */
    void setMessageCompression(boolean enable);
    
    /**
     * 判断是否准备好发送更多消息
     * 
     * @return 如果准备好返回true
     */
    boolean isReady();
    
    /**
     * 设置准备状态监听器
     * 当流准备好接收更多消息时会被调用
     * 
     * @param onReadyHandler 准备状态处理器
     */
    void setOnReadyHandler(Runnable onReadyHandler);
} 